"""
十九、用python写一个网页归档程序（爬虫），把 http://quotes.toscrape.com/ 网站上的10个页面全部下载下来。从起始地址 http://quotes.toscrape.com/ 开始，把余下的9个页面的地址找出来，然后爬取。

    思路：

        1. 首先把起始的url的网页拿下来，存起来
        2. 用re模块从刚刚下载好的网页代码中找出下一页的url
        3. 重复第1第2步，就是：下载网页 --> 存储网页 --> 找出下一页的地址
        4. 当找不到下一页时，表示全部网页都下载完毕了，程序退出

"""
import requests
import re


def fetch(url):
    response = requests.get(url)
    if response.ok:
        html = response.text
    else:
        html = ''
    return html


def store(data, path):
    with open(path, 'w') as f:
        f.write(data)


def extract_url(html, base_url):
    url = re.findall(r'<a href="([^"]+)">Next', html)
    if not url:
        return None
    url = url[0]
    return base_url + url


if __name__ == '__main__':
    base_url = 'http://quotes.toscrape.com'
    url = 'http://quotes.toscrape.com/page/1/'
    while True:
        page_num = url.rstrip('/').split('/')[-1]
        print('fetching page %s ...' % page_num)
        html = fetch(url)
        fname = 'page_%s.html' % page_num
        store(html, fname)
        url = extract_url(html, base_url)
        if not url:
            break
